有这样一个类。moduleFooclassBarendend而且我想获取不包含Foo的Bar的类名。bar=Foo::Bar.newbar.class.to_s.match('::(.+)$'){$1}我可以通过这段代码获取类名,但我认为这不是获取类名的最佳方式。有没有更好的方法在没有命名空间的情况下获取类名? 最佳答案 如果您正在使用ActiveSupport(Rails的一部分),您实际上可以在String类上使用#demodulize方法。http://apidock.com/rails/String/demodulizeba
我正在尝试从字符串中解析单词并将它们放入数组中。我试过以下方法:@string1="orienteddesign,decomposition,encapsulation,andtesting.Uses"puts@string1.scan(/\s([^\,\.\s]*)/)它似乎可以解决问题,但它有点不稳定(例如,我应该包括更多特殊字符)。在ruby中有更好的方法吗?可选:我有一个CS类(class)描述。我打算把里面的所有单词都提取出来放在一个字符串数组中,从生成的数组中去掉英语中最常见的单词,然后把剩下的单词作为标签,用户可以用来搜索cs类(class)。
这太简单了,我简直不敢相信它捕获了我。defmeth(id,options="options",scope="scope")putsoptionsendmeth(1,scope="meh")->"meh"我倾向于使用散列作为参数选项,因为这是大众的做法——而且非常干净。我以为这是标准。今天,经过大约3小时的错误搜索,我找到了一个错误到我碰巧使用的这个gem,assumes命名参数将被接受。他们不是。所以,我的问题是:命名参数在Ruby(1.9.3)中是否正式不受尊重,或者这是我遗漏了什么的副作用?如果不是,为什么不呢? 最佳答案 实
学习ruby。我的印象是bool属性应该命名如下:my_boolean_attribute?但是,我在尝试执行以下操作时遇到语法错误:classMyClassattr_accessor:my_boolean_attribute?definitialize:my_boolean_attribute?=falseendend显然ruby讨厌“?”。这是惯例吗?我做错了什么? 最佳答案 编辑:三年后;时代在变……Julik'sanswer是当今解决问题的最简单和最好的方法:classFooattr_accessor:deadalias
我正在使用RubyonRails3,我想在命名空间中处理模型(类)命名空间。也就是说,如果我有一个名为NS1的命名空间和一个名为NS2的命名空间的“子命名空间”,我想在中处理模型(类)NS2。如果我运行一个脚手架railsgeneratescaffoldns1/ns2/Articleid:integertitle:string它将生成以下模型文件:models/ns1/ns2/article.rbfilemodels/ns1/articles.rbmodels/ns1/articles.rb包含:moduleNs1::Articlesdefself.table_name_prefix'
这真的是一个关于命名约定的问题。我有一个名为PromotedEvents的模型该文件名为promoted_events.rb我创建了这个表:create_table:promoted_eventsdo|t|现在我在创建任何东西时都遇到了问题,所以我想知道使用带有两个词的模型是否存在问题我在控制台中尝试了a=PromotedEvents.newa=Promoted_Event.newa=promoted_event.new并不断收到nameerror:uninitializedconstant错误有什么想法吗? 最佳答案 你的类(cl
我正在寻找一种方法来可靠地从Ruby中的URL字符串中提取主机名。例如http://www.mglenn.com/directory=www.mglenn.com或者http://www.mglenn.com?param=x=www.mglenn.com 最佳答案 你可以尝试这样的事情:require'uri'myUri=URI.parse('http://www.mglenn.com/directory')printmyUri.host#=>www.mglenn.com 关于从URL字
是否有更短的方法来执行以下操作(@user.employees.map{|e|{id:e.id,name:e.name}}#=>[{id:1,name:'Pete'},{id:2,name:'Fred'}]用户has_many员工。这两个类都继承自ActiveRecord::Base。上面有两点我不喜欢它在映射之前将员工加载到内存中,它很冗长(我猜是主观的)。有没有更好的办法? 最佳答案 更新:查看@jamesharker的解决方案:从ActiveRecord>=4,pluck接受多个参数:@user.employees.pluck
因此Module可以在Ruby中用于提供命名空间以及混入,如下所示:moduleSomeNamespaceclassAnimalendendanimal=SomeNamespace::Animal.new但我也看到了以下使用:moduleSomeNamespaceendclassSomeNamespace::Animalendanimal=SomeNamespace::Animal.new我的问题是它们有何不同(如果有的话)以及哪个更符合Ruby的习惯? 最佳答案 区别在于嵌套。在下面的示例中,您可以看到使用类Foo的前一种方法可以
比如,对于常量,是不是:THIS_CONSTANTThis_ConstantThisConstant还是别的什么……?事实上,对于整个主题,是否有某种(准|)官方引用?我还希望能够快速复查以下问题:Ruby本身强制执行哪些命名模式(例如,Constant必须以大写开头,对吗?)哪些只是约定(method_name应该是蛇形的,对吧?)?对于如何在其名称中写入变量应该属于哪个类的提示,是否有任何约定?(“匈牙利表示法”或其他...我的意思是,我的印象是,如果您觉得有必要在Ruby代码中使用它,那您就做错了,但无论如何,是有约定吗?)等等…… 最佳答案